// pages/tabBer/home/home.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 推荐商品列表数据
        recommendProducts: [],
        displayProducts: [],   // 当前显示的 2 条商品
        articles: [],
        displayArticles: [],// 当前显示的 3 条资讯
        score: 0,
        detectTime: '2024-05-20',
        tip: '较上月提升5分，健康状态优秀！',
        //轮播图配置
        indicatorDots: true,
        autoplay: true,
        interval: 3000,
        duration: 500,
        circular: true,
        // 轮播图数据列表（Mock 数据）
        swiperList: []
    },
    goToMoreService(){
        wx.showToast({
          title: '敬请期待~',
        })
    },

    // 跳转到专家咨询
    goToExpertConsult(){
        wx.navigateTo({
          url: '/pages/business/expertConsult/expertConsult',
        })
    },
    // 跳转到健康积分
    goToHealthScore(){
        wx.navigateTo({
          url: '/pages/business/health-score/health-score',
        })
    },
    // 跳转到就诊预约
    goToAppointment(){
        wx.navigateTo({
          url: '/pages/business/appointment/appointment',
        })
    },

    // 跳转到商城
    goToMall() {
        wx.switchTab({
            url: '/pages/tabBar/mall/mall',
        })
    },

    goToShoping() {
        //     const productId = e.currentTarget.dataset.productId;
        //   console.log('准备跳转到商品', productId, '的详情页');
        // 实际项目中可跳转：wx.navigateTo({ url: `/pages/productDetail/productDetail?id=${productId}` });
        wx.navigateTo({ url: "/pages/business/shoping/shoping" });
    },

    // 新增：跳转到搜索页面
    goToSearchPage: function () {
        wx.navigateTo({
            url: '/pages/business/search/search',
        })
    },

    goToAllArticle() {
        wx.navigateTo({
            url: '/pages/business/allArticle/allArticle',
        })
    },

    goToHealth() {
        wx.navigateTo({
            url: '/pages/business/health/health',
        })
    },

    // 接收AI助手的事件
    onAiAction(e) {
        const { action } = e.detail
        switch (action) {
            case 'chat':
                wx.navigateTo({ url: '/pages/ai-chat/ai-chat' })
                break
            case 'help':
                wx.showModal({ title: '帮助', content: 'AI助手可帮您解答问题' })
                break
        }
    },

    // 点击搜索按钮或回车时触发（执行搜索逻辑）
    onSearch(e) {
        const keyword = e.detail.value; // 获取输入的关键词
        if (keyword) {
            console.log("搜索内容：", keyword);
            // 实际项目中：调用接口请求搜索结果
        } else {
            wx.showToast({ title: "请输入搜索内容", icon: "none" });
        }
    },
    // 立即检测更新
    onDetect() {
        wx.showLoading({ title: '检测中...' });
        // 模拟检测过程，实际项目中替换为接口请求
        setTimeout(() => {
            wx.hideLoading();
            wx.showToast({ title: '检测完成！', icon: 'success' });
        }, 2000);
    },

    // 输入内容变化时触发（可用于实时联想提示）
    onInput(e) {
        const keyword = e.detail.value;
        console.log("实时输入：", keyword);
        // 实际项目中：可做实时联想、防抖处理
    },

    // 点击取消按钮时触发
    onCancel() {
        console.log("取消搜索");
        // 实际项目中：可清空输入框、隐藏联想列表等
    },
    // 预约洗牙点击事件
    onReserve() {
        wx.showToast({
            title: '跳转至预约页面',
            icon: 'none'
        });
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad() {
        // 初始化：模拟从后端获取数据（未来替换为真实接口）
        this.fetchProducts();
        // 初始化：模拟从后端获取数据（未来替换为真实接口）
        this.fetchArticles();
        // 在页面加载时，获取轮播图数据
        this.fetchSwiperData();
    },

    /**
   * 模拟从后端获取轮播图数据
   * 这个函数在未来可以直接对接真实的后端 API
   */
    fetchSwiperData() {
        // TODO: 未来对接后端时，替换下面的 Mock 数据
        // wx.request({
        //   url: 'https://api.example.com/getSwiperList',
        //   success: (res) => {
        //     if (res.data.code === 200) {
        //       this.setData({
        //         swiperList: res.data.data // 将后端返回的数据赋值给 swiperList
        //       });
        //     }
        //   }
        // });

        // ===== 现阶段使用的 Mock 数据 =====
        const mockSwiperData = [
            {
                id: 1,
                imageUrl: '/assets/images/zly.jpg', // 随机自然风景图
                // 可以在这里增加更多字段，如跳转链接
                // link: '/pages/home/index'
            },
            {
                id: 2,
                imageUrl: '/assets/images/zly.jpg', // 随机科技图
            },
            {
                id: 3,
                imageUrl: '/assets/images/zly.jpg', // 随机美食图
            }
        ];

        // 将 Mock 数据设置到页面的 data 中
        this.setData({
            swiperList: mockSwiperData
        });
    },

    /**
   * 模拟从后端获取商品数据
   * 未来替换为 wx.request 调用真实接口
   */
    fetchProducts() {
        // 模拟数据（实际项目中从后端获取）
        const mockProducts = [
            { id: 1, category: '限时特惠', imageUrl: '/assets/images/my/avatar.jpg', level_score: 4.5, Product_Details: '商品1详情...', now_price: 99, old_price: 129 },
            { id: 2, category: '健康优选', imageUrl: '/assets/images/my/avatar.jpg', level_score: 4.8, Product_Details: '商品2详情...', now_price: 199, old_price: 229 },
            { id: 3, category: '健康优选', imageUrl: '/assets/images/my/avatar.jpg', level_score: 4.2, Product_Details: '商品3详情...', now_price: 89, old_price: 109 },
            { id: 4, category: '新品上市', imageUrl: '/assets/images/my/avatar.jpg', level_score: 5.0, Product_Details: '商品4详情...', now_price: 299, old_price: 349 },
            { id: 5, category: '限时特惠', imageUrl: '/assets/images/my/avatar.jpg', level_score: 4.6, Product_Details: '商品5详情...', now_price: 159, old_price: 189 },
        ];

        this.setData({
            recommendProducts: mockProducts,
        }, () => {
            // 初始化显示 2 条随机数据
            this.updateDisplayProducts();
        });
    },

    /**
   * 模拟从后端获取资讯数据
   * 未来替换为 wx.request 调用真实接口
   */
    fetchArticles() {
        // 模拟数据（实际项目中从后端获取）
        const mockArticles = [
            { id: 1, img: '/assets/images/zly.jpg', tagType: 'primary', tagColor: '#1890ff', tag: '健康指南', time: '2024-05-20', title: '夏季养生：如何科学防暑降温', views: 1.2 },
            { id: 2, img: '/assets/images/zly.jpg', tagType: 'success', tagColor: '#52c41a', tag: '饮食健康', time: '2024-05-18', title: '膳食纤维的重要性及食物来源', views: 0.8 },
            { id: 3, img: '/assets/images/zly.jpg', tagType: 'warning', tagColor: '#faad14', tag: '运动健身', time: '2024-05-15', title: '居家锻炼的 5 个高效动作', views: 1.5 },
            { id: 4, img: '/assets/images/zly.jpg', tagType: 'danger', tagColor: '#ff4d4f', tag: '心理健康', time: '2024-05-12', title: '缓解压力的 3 个实用方法', views: 1.1 },
            { id: 5, img: '/assets/images/zly.jpg', tagType: 'info', tagColor: '#40a9ff', tag: '睡眠指导', time: '2024-05-10', title: '提高睡眠质量的 7 个技巧', views: 0.9 },
            { id: 6, img: '/assets/images/zly.jpg', tagType: 'primary', tagColor: '#1890ff', tag: '疾病预防', time: '2024-05-08', title: '春季常见传染病预防指南', views: 1.3 },
        ];

        this.setData({
            articles: mockArticles,
        }, () => {
            // 初始化显示 3 条随机数据
            this.updateDisplayArticles();
        });
    },
    // AI拍照检测
    goToCheck() {
        wx.switchTab({
            url: '/pages/tabBar/tooth/tooth',
        })
    },

    // 健康报告
    goToReportExport() {
        wx.navigateTo({
            url: '/pages/business/report-list/report-list',
        })
    },

    goToMall() {
        wx.switchTab({
            url: '/pages/tabBar/mall/mall',
        })
    },

    /**
     * 从完整列表中随机选择 2 条数据更新视图
     */
    /**
   * 从完整列表中随机选择 2 条数据更新视图
   * 优化：确保每次刷新后的数据与上一次不同
   */
    updateDisplayProducts() {
        const { recommendProducts, displayProducts } = this.data;
        if (!recommendProducts.length) return;

        // 如果商品总数小于等于 2，则直接显示所有商品
        if (recommendProducts.length <= 2) {
            this.setData({ displayProducts: recommendProducts });
            return;
        }

        // 随机排序后取前 2 条
        const shuffled = [...recommendProducts].sort(() => Math.random() - 0.5);
        const newDisplayProducts = shuffled.slice(0, 2);

        // 确保新数据与上一次不同
        const isSame = displayProducts.length > 0 &&
            newDisplayProducts.every((product, index) => product.id === displayProducts[index].id);

        if (isSame) {
            // 如果相同，则重新获取
            this.updateDisplayProducts();
        } else {
            this.setData({ displayProducts: newDisplayProducts });
        }
    },

    /**
   * 从完整列表中随机选择 3 条数据更新视图
   * 确保每次刷新后的数据与上一次不同
   */
    updateDisplayArticles() {
        const { articles, displayArticles } = this.data;
        if (!articles.length) return;

        // 如果资讯总数小于等于 3，则直接显示所有
        if (articles.length <= 3) {
            this.setData({ displayArticles: articles });
            return;
        }

        // 随机排序后取前 3 条
        const shuffled = [...articles].sort(() => Math.random() - 0.5);
        const newDisplayArticles = shuffled.slice(0, 3);

        // 确保新数据与上一次不同
        const isSame = displayArticles.length > 0 &&
            newDisplayArticles.every((article, index) => article.id === displayArticles[index].id);

        if (isSame) {
            // 如果相同，则重新获取
            this.updateDisplayArticles();
        } else {
            this.setData({ displayArticles: newDisplayArticles });
        }
    },


    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    // 每次页面显示时触发（包括首次进入和返回）
    onShow() {
        // 步骤1：先将score重置为0（确保动画起点正确）
        this.setData({ score: 0 });

        // 步骤2：延迟100ms后更新到目标值（92），触发动画
        // 延迟的目的是让组件感知到“从0到92”的变化，否则可能跳过动画
        setTimeout(() => {
            this.setData({ score: 92 });
        }, 200);
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    /**
   * 下拉刷新事件
   */
    /**
   * 下拉刷新事件
   */
    onPullDownRefresh() {
        // 模拟重新从后端获取数据（实际项目中调用接口）
        this.fetchProducts();
        // 模拟重新从后端获取数据（实际项目中调用接口）
        this.fetchArticles();
        setTimeout(() => {
            wx.stopPullDownRefresh();
        }, 500);
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})